/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package BeansGerenciaveis;

import DAO.Conexao;
import DAO.PeriodicoDao;
import bean.Periodico;
import java.sql.PreparedStatement;
import java.util.ArrayList;
import java.util.List;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;
import javax.faces.model.DataModel;
import javax.faces.model.ListDataModel;

/**
 *
 * @author fernando
 */
@ManagedBean
@SessionScoped
public class PeriodicoBean {

    /**
     * Creates a new instance of PeriodicoBean
     */
    public PeriodicoBean() {
        this.periodicoDao = new PeriodicoDao();
        this.periodico = new Periodico();
        
    }

    public void novoPeriodico() {
        this.periodicoDao = new PeriodicoDao();
        this.periodico = new Periodico();
        
        this.carregarPeriodicos();
    }

    public PeriodicoDao getPeriodicoDao() {
        return periodicoDao;
    }

    public void setPeriodicoDao(PeriodicoDao PeriodicoDao) {
        this.periodicoDao = PeriodicoDao;
    }

    public Periodico getPeriodico() {
        return periodico;
    }

    public void setPeriodico(Periodico periodico) {
        this.periodico = periodico;
    }

    public PreparedStatement getPs() {
        return ps;
    }

    public void setPs(PreparedStatement ps) {
        this.ps = ps;
    }

    public void setPeriodicos(DataModel<Periodico> periodicos) {
        this.periodicos = periodicos;
    }

    public boolean isSucesso() {
        return sucesso;
    }

    public void setSucesso(boolean sucesso) {
        this.sucesso = sucesso;
    }

    public Conexao getConexao() {
        return conexao;
    }

    public void setConexao(Conexao conexao) {
        this.conexao = conexao;
    }

    public ArrayList<Periodico> getListaPeriodicos() {
        if(listaPeriodicos == null){
            this.carregarPeriodicos();
        }
        return listaPeriodicos;
    }

    public void setListaPeriodicos(ArrayList<Periodico> listaPeriodicos) {
        this.listaPeriodicos = listaPeriodicos;
    }

    public String cadastroPeriodico() {
        String resultado = "/cadastros/acaoErro";

        periodicoDao = new PeriodicoDao();

        System.out.println("Cadastro Periodico - Executado");
        System.out.println(periodico.getTitulo());


        sucesso = periodicoDao.cadastrarPeriodico(periodico);

        if (sucesso) {
            this.novoPeriodico();
            this.carregarPeriodicos();
            return "/cadastros/obras/periodicos/cadastro/cadastroSucesso";
        }

        return resultado;
    }

    public void selecionar() {
        periodico = periodicos.getRowData();
    }
    
    public DataModel<Periodico> getPeriodicos() {
        System.out.println("Periodico Dao - getPeriodicos: Fui executado!");
        if(this.periodicos == null){
            this.carregarPeriodicos();
        }
        return periodicos;
    }
    
    //Método Necessário para retornar uma lista a ser mostrada no selectOneMenu da view de cadastro de autores!
    
    public List<Periodico> listarPeriodicos(){
        System.out.println("Periodico Bean - Listar Periodicos: Fui executado!");
        periodicoDao = new PeriodicoDao();
        listaPeriodicos = periodicoDao.listarPeriodicos();
        return listaPeriodicos;
    }
    
    public String removerPeriodico() {
        String resultado = "/cadastros/acaoErro";
        periodicoDao = new PeriodicoDao();
        sucesso = periodicoDao.removerPeriodico(periodico);

        if (sucesso) {
            return "/cadastros/acaoSucesso";
        }

        return resultado;
    }
    
    public String editarInstituicao()
    {
        String resultado = "/cadastros/acaoErro";
        
        periodicoDao = new PeriodicoDao();
        sucesso = periodicoDao.alterarPeriodico(periodico);
        
        if(sucesso)
        {
            this.novoPeriodico();
            this.carregarPeriodicos();
            resultado = "/cadastros/acaoSucesso";
        }
        
        return resultado;
    }
    
    public void carregarPeriodicos(){
        periodicoDao = new PeriodicoDao();
        listaPeriodicos = periodicoDao.listarPeriodicos();
        periodicos = new ListDataModel<Periodico>(listaPeriodicos);
    }
    
   
    
    
    private PeriodicoDao periodicoDao;
    private Periodico periodico;
    private PreparedStatement ps;
    private DataModel<Periodico> periodicos;
    private boolean sucesso = false;
    private Conexao conexao;
    private ArrayList<Periodico> listaPeriodicos;
    
}
